package btc.model;


import static ch.lambdaj.Lambda.filter;
import static ch.lambdaj.Lambda.having;
import static ch.lambdaj.Lambda.on;

import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.List;

/**
 * User: juan
 * Date: 11/23/12
 * Time: 8:08 PM
 */
public class Pallet {

    public static int BLOQUES_X_PALLET = 100;

    private Long id;
    private Date fechaProceso;
    private String clasificacionPallet;
    private int idMaquina;

    private Collection<Bloque> bloques;

    public Pallet(int id,Date fechaProceso, String clasificacion, int idMaquina) {
        this.id = Long.valueOf(id);
    	this.fechaProceso = fechaProceso;
    	this.clasificacionPallet = clasificacion;
        this.idMaquina = idMaquina;
    }
    
    public Pallet(){}
        
    public static Pallet createPallet(Date fechaProceso, String clasificacionPallet, int idMaquina) {
        Pallet pallet = new Pallet();
        pallet.fechaProceso = fechaProceso;
        pallet.clasificacionPallet = clasificacionPallet;
        pallet.idMaquina = idMaquina;
        return pallet;
    }

    public Date getFechaProceso() {
        return fechaProceso;
    }

    public String getClasificacionPallet() {
        return clasificacionPallet;
    }

    public int getIdMaquina() {
        return idMaquina;
    }

    public Long getId() {
        return id;
    }

    public int getCantidadDeBloquesDefectuosos() {
        List<Bloque> defectuosos = filter(having(on(Bloque.class).isDefectuoso()), getBloques());
        return defectuosos.size();
    }

    public Collection<Bloque> getBloques() {
        if (bloques == null) {
            bloques = Collections.EMPTY_LIST;
        }
        return bloques;
    }

    public void setBloques(Collection<Bloque> bloques) {
        this.bloques = bloques;
    }
}
